package edu.eam.gruposenior.gestorLEcciones.util;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */


import javax.persistence.EntityManager;

import edu.eam.gruposenior.gestorLEcciones.entidades.Usuario;
import java.util.List;

/**
 * Clase para controlar el funcionario que esta en session.
 * 
 * @author Claudia
 */
@SuppressWarnings("unchecked")
public class LogginManager {

    /**
     * TODO: definir el valor en el archivo de props. Mensaje desde el archivo
     * de propiedadea que indica el password erroneo.
     */
    private static final String MSJ_LOGGIN_MANAGER_PASSWORD_INVALIDO = "LogginManager.PasswordInvalido";
    /**
     * TODO: definir el valor en el archivo de props. Mensaje desde el archivo
     * de propiedadea que indica el nombre de usuario erroneo.
     */
    private static final String MSJ_LOGGIN_MANAGER_USUARIO_NO_EXISTE = "LogginManager.UserInvalido";
    /**
     * Funcionario en Session.
     */
    private static Usuario usuario;

    
    private static String[] roles;
    /**
     * Metodo para ingresar a la aplicacion
     * 
     * @param login
     *            nombre de usuario del funcionario
     * @param password
     *            contraseña del funcionario.
     * @return true si fue existoso.
     */
    public static boolean LogIn(String login, String password) throws Exception {

        EntityManager em = FactoryEntityManager.getEm();
        
        List<Usuario> users=em.createNamedQuery("Usuario.findByNivkPass").
                setParameter("nickname", login).setParameter("password", password).
                getResultList();
        
        
        if(users.isEmpty()){
            return false;
        }else{
            usuario=users.get(0);
            roles=new String[users.get(0).getRoles().size()];
            
            for (int i = 0; i < users.get(0).getRoles().size(); i++) {
                
                roles[i]=users.get(0).getRoles().get(i).getRol().getDescripcion();
                
            }
            
            return true;
        }
        
       
        

        

    }

    /**
     * Metodo que permite indicar si un rol esta en sesion
     * 
     * @param rol
     *            rol a verificar
     * @return true si esta el rol activado.
     */
    public boolean poseeRol(String rol) {

        for (int i = 0; i < roles.length; i++) {
            String string = roles[i];
            
            if(rol.equals(string)){
                return true;
            }
        }
        return false;

    }

    /**
     * Metodo que indica cuales son los roles activos en la session.
     * @return un arreglo de Strings con los Roles.
     */
    public static String[] getRolesActivos() {
    	
    	return roles;
    	
    }
    /**
     * Funcionario que inicio session
     * @return 
     */
    public static Usuario getUsuario() {
        
        return usuario;
    }
    
    
}
